home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / tex / texsrc.arc / TEX8.C < prev    next >
C/C++ Source or Header  |  1988-09-14  |  56KB  |  2,235 lines

  1. overlay "tex8"
  2. #define EXTERN extern
  3. #include "texd.h"
  4.  
  5. mathlimitswi () { /* 10 */ r_mathlimitswi 
  6.   if ( curlist .headfield != curlist .tailfield ) 
  7.   if ( mem [(long) curlist .tailfield ] .hh.b0 == 17 ) 
  8.   {
  9.     mem [(long) curlist .tailfield ] .hh.b1 = curchr ; 
  10.     return ; 
  11.   } 
  12.   {
  13.     if ( interaction == 3 ) 
  14.     wakeuptermin () ; 
  15.     printnl ( 133 ) ; 
  16.     print ( 978 ) ; 
  17.   } 
  18.   {
  19.     helpptr = 1 ; 
  20.     helpline [ 0 ] = 979 ; 
  21.   } 
  22.   error () ; 
  23. zscandelimite ( p , r ) 
  24. halfword p ; 
  25. boolean r ; 
  26. {r_scandelimite 
  27.   if ( r ) 
  28.   scantwentyse () ; 
  29.   else { 
  30.     do { getxtoken () ; 
  31.     } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  32.     switch ( curcmd ) 
  33.     {case 11 : 
  34.     case 12 : 
  35.       curval = eqtb [ 5573 + curchr ] .cint ; 
  36.       break ; 
  37.     case 15 : 
  38.       scantwentyse () ; 
  39.       break ; 
  40.     default : 
  41.       curval = - 1 ; 
  42.       break ; 
  43.     } 
  44.   } 
  45.   if ( curval < 0 ) 
  46.   {
  47.     {
  48.       if ( interaction == 3 ) 
  49.       wakeuptermin () ; 
  50.       printnl ( 133 ) ; 
  51.       print ( 980 ) ; 
  52.     } 
  53.     {
  54.       helpptr = 6 ; 
  55.       helpline [ 5 ] = 981 ; 
  56.       helpline [ 4 ] = 982 ; 
  57.       helpline [ 3 ] = 983 ; 
  58.       helpline [ 2 ] = 984 ; 
  59.       helpline [ 1 ] = 985 ; 
  60.       helpline [ 0 ] = 986 ; 
  61.     } 
  62.     backerror () ; 
  63.     curval = 0 ; 
  64.   } 
  65.   mem [(long) p ] .qqqq .b0 = ( curval / 1048576 ) % 16 ; 
  66.   mem [(long) p ] .qqqq .b1 = ( curval / 4096 ) % 256 ; 
  67.   mem [(long) p ] .qqqq .b2 = ( curval / 256 ) % 16 ; 
  68.   mem [(long) p ] .qqqq .b3 = curval % 256 ; 
  69. mathradical () { r_mathradical 
  70.   {
  71.     mem [(long) curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ; 
  72.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  73.   } 
  74.   mem [(long) curlist .tailfield ] .hh.b0 = 24 ; 
  75.   mem [(long) curlist .tailfield ] .hh.b1 = 0 ; 
  76.   mem [(long) curlist .tailfield + 1 ] .hh = emptyfield ; 
  77.   mem [(long) curlist .tailfield + 3 ] .hh = emptyfield ; 
  78.   mem [(long) curlist .tailfield + 2 ] .hh = emptyfield ; 
  79.   scandelimite ( curlist .tailfield + 4 , true ) ; 
  80.   scanmath ( curlist .tailfield + 1 ) ; 
  81. mathac () { r_mathac 
  82.   if ( curcmd == 45 ) 
  83.   {
  84.     {
  85.       if ( interaction == 3 ) 
  86.       wakeuptermin () ; 
  87.       printnl ( 133 ) ; 
  88.       print ( 987 ) ; 
  89.     } 
  90.     printesc ( 382 ) ; 
  91.     print ( 988 ) ; 
  92.     {
  93.       helpptr = 2 ; 
  94.       helpline [ 1 ] = 989 ; 
  95.       helpline [ 0 ] = 990 ; 
  96.     } 
  97.     error () ; 
  98.   } 
  99.   {
  100.     mem [(long) curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ; 
  101.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  102.   } 
  103.   mem [(long) curlist .tailfield ] .hh.b0 = 28 ; 
  104.   mem [(long) curlist .tailfield ] .hh.b1 = 0 ; 
  105.   mem [(long) curlist .tailfield + 1 ] .hh = emptyfield ; 
  106.   mem [(long) curlist .tailfield + 3 ] .hh = emptyfield ; 
  107.   mem [(long) curlist .tailfield + 2 ] .hh = emptyfield ; 
  108.   mem [(long) curlist .tailfield + 4 ] .hh .v.RH = 1 ; 
  109.   scanfifteenb () ; 
  110.   mem [(long) curlist .tailfield + 4 ] .hh.b1 = curval % 256 ; 
  111.   if ( ( curval >= 28672 ) && ( ( eqtb [ 5311 ] .cint >= 0 ) && ( eqtb [ 5311 
  112.   ] .cint < 16 ) ) ) 
  113.   mem [(long) curlist .tailfield + 4 ] .hh.b0 = eqtb [ 5311 ] .cint ; 
  114.   else mem [(long) curlist .tailfield + 4 ] .hh.b0 = ( curval / 256 ) % 16 ; 
  115.   scanmath ( curlist .tailfield + 1 ) ; 
  116. appendchoice () { r_appendchoice 
  117.   {
  118.     mem [(long) curlist .tailfield ] .hh .v.RH = newchoice () ; 
  119.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  120.   } 
  121.   incr ( saveptr ) ; 
  122.   savestack [ saveptr - 1 ] .cint = 0 ; 
  123.   scanleftbrac () ; 
  124.   pushmath ( 13 ) ; 
  125. halfword zfinmlist ( p ) 
  126. halfword p ; 
  127. {register halfword Result; r_finmlist 
  128.   halfword q ; 
  129.   if ( curlist .auxfield != 0 ) 
  130.   {
  131.     mem [(long) curlist .auxfield + 3 ] .hh .v.RH = 3 ; 
  132.     mem [(long) curlist .auxfield + 3 ] .hh .v.LH = mem [(long) curlist .headfield ] .hh 
  133.     .v.RH ; 
  134.     if ( p == 0 ) 
  135.     q = curlist .auxfield ; 
  136.     else { 
  137.       q = mem [(long) curlist .auxfield + 2 ] .hh .v.LH ; 
  138.       if ( mem [(long) q ] .hh.b0 != 30 ) 
  139.       confusion ( 730 ) ; 
  140.       mem [(long) curlist .auxfield + 2 ] .hh .v.LH = mem [(long) q ] .hh .v.RH ; 
  141.       mem [(long) q ] .hh .v.RH = curlist .auxfield ; 
  142.       mem [(long) curlist .auxfield ] .hh .v.RH = p ; 
  143.     } 
  144.   } 
  145.   else { 
  146.     mem [(long) curlist .tailfield ] .hh .v.RH = p ; 
  147.     q = mem [(long) curlist .headfield ] .hh .v.RH ; 
  148.   } 
  149.   popnest () ; 
  150.   Result = q ; 
  151.   return(Result) ; 
  152. buildchoices () { /* 10 */ r_buildchoices 
  153.   halfword p ; 
  154.   unsave () ; 
  155.   p = finmlist ( 0 ) ; 
  156.   switch ( savestack [ saveptr - 1 ] .cint ) 
  157.   {case 0 : 
  158.     mem [(long) curlist .tailfield + 1 ] .hh .v.LH = p ; 
  159.     break ; 
  160.   case 1 : 
  161.     mem [(long) curlist .tailfield + 1 ] .hh .v.RH = p ; 
  162.     break ; 
  163.   case 2 : 
  164.     mem [(long) curlist .tailfield + 2 ] .hh .v.LH = p ; 
  165.     break ; 
  166.   case 3 : 
  167.     {
  168.       mem [(long) curlist .tailfield + 2 ] .hh .v.RH = p ; 
  169.       decr ( saveptr ) ; 
  170.       return ; 
  171.     } 
  172.     break ; 
  173.   } 
  174.   incr ( savestack [ saveptr - 1 ] .cint ) ; 
  175.   scanleftbrac () ; 
  176.   pushmath ( 13 ) ; 
  177. subsup () { r_subsup 
  178.   smallnumber t ; 
  179.   halfword p ; 
  180.   t = 0 ; 
  181.   p = 0 ; 
  182.   if ( curlist .tailfield != curlist .headfield ) 
  183.   if ( ( mem [(long) curlist .tailfield ] .hh.b0 >= 16 ) && ( mem [(long) curlist 
  184.   .tailfield ] .hh.b0 < 30 ) ) 
  185.   {
  186.     p = curlist .tailfield + 2 + curcmd - 7 ; 
  187.     t = mem [(long) p ] .hh .v.RH ; 
  188.   } 
  189.   if ( ( p == 0 ) || ( t != 0 ) ) 
  190.   {
  191.     {
  192.       mem [(long) curlist .tailfield ] .hh .v.RH = newnoad () ; 
  193.       curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  194.     } 
  195.     p = curlist .tailfield + 2 + curcmd - 7 ; 
  196.     if ( t != 0 ) 
  197.     {
  198.       if ( curcmd == 7 ) 
  199.       {
  200.     {
  201.       if ( interaction == 3 ) 
  202.       wakeuptermin () ; 
  203.       printnl ( 133 ) ; 
  204.       print ( 991 ) ; 
  205.     } 
  206.     {
  207.       helpptr = 1 ; 
  208.       helpline [ 0 ] = 992 ; 
  209.     } 
  210.       } 
  211.       else { 
  212.     {
  213.       if ( interaction == 3 ) 
  214.       wakeuptermin () ; 
  215.       printnl ( 133 ) ; 
  216.       print ( 993 ) ; 
  217.     } 
  218.     {
  219.       helpptr = 1 ; 
  220.       helpline [ 0 ] = 994 ; 
  221.     } 
  222.       } 
  223.       error () ; 
  224.     } 
  225.   } 
  226.   scanmath ( p ) ; 
  227. mathfraction () { r_mathfraction 
  228.   smallnumber c ; 
  229.   c = curchr ; 
  230.   if ( curlist .auxfield != 0 ) 
  231.   {
  232.     if ( c >= 3 ) 
  233.     {
  234.       scandelimite ( memtop - 12 , false ) ; 
  235.       scandelimite ( memtop - 12 , false ) ; 
  236.     } 
  237.     if ( c % 3 == 0 ) 
  238.     scandimen ( false , false , false ) ; 
  239.     {
  240.       if ( interaction == 3 ) 
  241.       wakeuptermin () ; 
  242.       printnl ( 133 ) ; 
  243.       print ( 1001 ) ; 
  244.     } 
  245.     {
  246.       helpptr = 3 ; 
  247.       helpline [ 2 ] = 1002 ; 
  248.       helpline [ 1 ] = 1003 ; 
  249.       helpline [ 0 ] = 1004 ; 
  250.     } 
  251.     error () ; 
  252.   } 
  253.   else { 
  254.     curlist .auxfield = getnode ( 6 ) ; 
  255.     mem [(long) curlist .auxfield ] .hh.b0 = 25 ; 
  256.     mem [(long) curlist .auxfield ] .hh.b1 = 0 ; 
  257.     mem [(long) curlist .auxfield + 2 ] .hh .v.RH = 3 ; 
  258.     mem [(long) curlist .auxfield + 2 ] .hh .v.LH = mem [(long) curlist .headfield ] .hh 
  259.     .v.RH ; 
  260.     mem [(long) curlist .auxfield + 3 ] .hh = emptyfield ; 
  261.     mem [(long) curlist .auxfield + 4 ] .qqqq = nulldelimite ; 
  262.     mem [(long) curlist .auxfield + 5 ] .qqqq = nulldelimite ; 
  263.     mem [(long) curlist .headfield ] .hh .v.RH = 0 ; 
  264.     curlist .tailfield = curlist .headfield ; 
  265.     if ( c >= 3 ) 
  266.     {
  267.       scandelimite ( curlist .auxfield + 4 , false ) ; 
  268.       scandelimite ( curlist .auxfield + 5 , false ) ; 
  269.     } 
  270.     switch ( c % 3 ) 
  271.     {case 0 : 
  272.       {
  273.     scandimen ( false , false , false ) ; 
  274.     mem [(long) curlist .auxfield + 1 ] .cint = curval ; 
  275.       } 
  276.       break ; 
  277.     case 1 : 
  278.       mem [(long) curlist .auxfield + 1 ] .cint = 1073741824 ; 
  279.       break ; 
  280.     case 2 : 
  281.       mem [(long) curlist .auxfield + 1 ] .cint = 0 ; 
  282.       break ; 
  283.     } 
  284.   } 
  285. mathleftrigh () { r_mathleftrigh 
  286.   smallnumber t ; 
  287.   halfword p ; 
  288.   t = curchr ; 
  289.   if ( ( t == 31 ) && ( curgroup != 16 ) ) 
  290.   {
  291.     if ( curgroup == 15 ) 
  292.     {
  293.       scande